package com.codeblock_;

/**
 * @Author 小闽
 * @Date 2024/9/6 17:29
 * @PackageName: com.codeblock_
 * @ClassName: CodeBlock
 * @Description: 代码块
 * @Version 1.0
 */
public class CodeBlock {
    public static void main(String[] args) {
        // 构造器有三个参数
        Movie movie = new Movie("如意芳菲",1000,"鞠婧祎");
        // 构造器有两个参数
        Movie movie1 = new Movie("如意芳菲",100);
        // 构造器有一个参数
        Movie movie2 = new Movie("如意芳菲");
    }
}

class Movie{
    private String name;
    private double price;
    private String director;

    {
        System.out.println("电影屏幕打开...");
        System.out.println("广告播放完毕...");
        System.out.println("电影正式开始...");
    }

    /**
     * 构造方法
     */
    // (1)下面的三个构造器都有相同的语句
    // (2) 这样代码看起来冗余
    // (3) 这是我们可以把相同的语句，放入到一个代码块中，即可
    // (4) 这样当我们创建对象不管调用哪个构造器都会先调用代码块中的代码。
    // (5) 普通代码块，每创建一个对象就会执行一次代码块中的内容
    public Movie(String name) {
        System.out.println("这个方法被调用Movie(String name)");
        this.name = name;
    }

    public Movie(String name, double price) {
        System.out.println("这个方法被调用String name, double price");
        this.name = name;
        this.price = price;
    }

    public Movie(String name, double price, String director) {
        System.out.println("这个方法被调用String name, double price, String director");
        this.name = name;
        this.price = price;
        this.director = director;
    }
}
